/*
  军团战：人员招募
  题目背景
    《战舰世界》独联体服务器的军团战又开始啦!
    由于时间匆忙，安东诺夫的公会需要临时组建一支 7 个人的队伍去参加第一场军团战。
    现在队伍有 6 人，他准备在电报群里再找一位选手。
  题目描述
    总共有 n 位选手来应征。每位来应征的选手都有如下 2 个信息：
      1). 账号 PR 值 (战舰世界内评价玩家水平的指标，值越高表示玩家水平越高)。
      2). 参加军团战所需的报酬。
    《战舰世界》内军团战的报酬为钢铁。
    但是安东诺夫给这位选手的报酬有限，只有 R 点，并不一定能满足所有应征者的要求。
    他希望能从预算能承受的选手当中找到其中水平最高的选手加入军团战的队伍。
  输入
    输入共 n + 1 行。
    第一行为 2 个整数 n 和 R。
    接下来 n 行，每行有 2 个整数 k 和 p，用于描叙一位选手，
      其中 k 为选手的 PR 值，p 为选手要求钢铁的点数。
  输出
    一个整数。代表安东诺夫能招聘到的水平最高的选手的 PR 值。
    保证一定能招聘到一位选手。
  样例输入
    4 10
    100 20
    80 10
    90 15
    10 1
  样例输出
    80
*/

#include <bits/stdc++.h>

using namespace std;

struct str{
    int pf = 0;
    int bc = 0;
};

bool cmp(str a1, str b) {
    return a1.pf > b.pf;
}

int main() {
    int n; // 个数
    int m; // 最大值
    str a[100001] = {};

    cin >> n >> m;

    for (int i = 1; i <= n; i++) {
        cin >> a[i].pf >> a[i].bc;
    }

    // 1). 对 a[1] ~ a[n] 按 .pf 的值从大到小的顺序进行排序
    sort(a + 1, a + n + 1, cmp);

    // 2). 对 a[1] ~ a[n] 从前往后找, 找到第一个 .bc 小于等于 m 的 a[i],
    //     那么 a[i] 即为能招聘到的 .pf 最大的选手!
    for (int i = 1; i <= n; i++) {
        if (a[i].bc > m) {
            continue;
        } else {
            cout << a[i].pf;
            return 0;
        }
    }

    return 0;
}